Space-optimizing content display

ABSTRACT

An apparatus, method, computer system, and computer program product to optimize space available for displaying text descriptions in a limited area, such as a sidebar. Space is optimized by displaying only the maximum portion of the text describing each selection that will fit within the limited area, thereby allowing space to display additional text descriptions in the remaining portion of the limited area. Positioning a pointer over the maximum portion of the text causes the complete portion of the text to be displayed. The complete portion of the text can serve as a link to content related to the text. Space is also optimized by providing a thin scroll bar to add space for displaying content within a window.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to increasing the amount of informationthat can be displayed within a limited area of a user interface, such asa sidebar.

2. Description of the Related Art

The number of people using computer systems in their daily lives hasincreased dramatically with the growth of the Internet and the WorldWide Web, which provide access to virtually unlimited information storedby computer systems all over the world. As the sophistication ofcomputer users increases, user expectations of the types of userinterfaces and functionality that should be provided by softwareapplications also increase.

Many software development environments for desktop and networkapplications enable a developer to assemble an application using two ormore components that provide different types of functionality to theapplication. Components provide the capability for an application toprovide rich, fully-featured user interfaces, including functionalityfor windows, buttons, scrollbars, and so on. A component can be re-usedby many applications within a computer or among computers in a network.The application provides an environment, also referred to as a context,in which the component runs. Examples of applications built fromcomponents are word processors, such as Microsoft Word, and databaseprograms, such as Microsoft Access.

A component can include display code and functional code, where thedisplay code can display a visual portion of a user interface and thefunctional code controls when the visual portion is displayed and otherfunctions, such as responding to a user action taken with reference tothe visual portion. For example, a component's display code can displaya button in a user interface, and the component's functional code candetermine when the button is to be displayed and specify a function toperform when a user performs an action with reference to the button. Forexample, the user can point a cursor to the button (using a mouse orother pointing device) and click on the button, which causes thefunctional code for responding to activation of the button to beperformed. A component is not, however, required to include display codeor to display a visual portion of the user interface. When a componentdoes not display a visual portion of the user interface, the componentis sometimes referred to as being invisible.

Unfortunately, the functionality to implement components is not easilyachieved using the technology used for the web. Web browsers provideinformation in the form of a web page, which is produced by interpretinga text document encoded using a language specially developed for webapplications, Hypertext Markup Language (HTML). A single HTML documentcannot easily provide all of the information needed to provide asophisticated user interface in the form of a web page. Because of thelimitations of HTML, web application developers face significantchallenges in providing user interfaces that can access the wealth ofinformation available via the Internet using web technology and yetprovide the sophisticated features meeting users' expectations.

For example, a common format for user interfaces is to displaydescriptions of content items available in a multi-window format, withdifferent types of content items grouped into different windows. Such amulti-window format enables a user to view many types of contentsimultaneously. Typically, a main window, also referred to as a primarywindow, serves as the user's primary interface to interact with anapplication displaying the data. A given window, such as the mainwindow, can open other windows, also referred to as secondary windows,to provide the user with the capability to interact with particulartypes of application-specific data.

When an application needs input from a user, the application provides awindow into which the user enters or provides the information. Forexample, a typical Open menu item requires the name of a file to open,and the application provides a secondary window into which the user cantype the name of the file. Secondary windows to receive information froma user can be implemented using many types of components; for example, adialog box component is often used to open a new window in response toinput from the user (here, clicking on the Open menu item). In thedialog box, the user types the name of the file. Another example of acomponent that opens a new window to receive information from a user isa listbox component, which can provide a list of existing files fromwhich to choose and the ability to create a new file. Similarly, a treecomponent provides a list of folders from which an existing file can beselected and/or a new file or folder named. Another example of acomponent that opens a new window to receive additional information froma user is a checkbox component. A checkbox component provides a labeledbox with a list of pre-determined options, wherein each option can bechecked or unchecked to select or clear that option.

The application typically creates a user input box, such as a dialogbox, when the user clicks the menu item. The application typicallydestroys the dialog box immediately after the user supplies theinformation or closes the dialog box. For example, the user can closethe dialog box by clicking on an OK button to accept the data shown,entering new data and clicking on the OK button, clicking on a cancelbutton to close the window without entering new data, or clicking on aclose window button.

Many applications also use dialog boxes to display information oroptions while the user works in another window. For example, wordprocessing applications often use a dialog box that provides a textsearch option. While the application searches for the text, the dialogbox remains on the screen. The user can then return to the dialog boxand search for the same word again, or the user can change the entry inthe dialog box and search for a new word. Typically, the applicationcreates the dialog box when the user clicks the menu item and continuesto display the dialog for as long as the application runs or until theuser explicitly closes the dialog box.

Some types of display windows do not typically receive input from theuser. For example, HTML provides the ability to display a tool tip,which is a small context window that includes descriptive text displayedwhen the user moves the pointer over the context window. Unlike a link,the tool tip is activated when the user points to the context windowcontaining the descriptive text. The descriptive text within the contextwindow is normally distinguished from other plain text in the userinterface to indicate to the user that the descriptive text within isactionable. For example, the descriptive text may have a visible contextwindow border or be underlined to visually distinguish the descriptivetext from other plain text. However, while tool tips can display datarelated to the actionable user interface object, tool tips are typicallyused as a help utility to display a fixed text informing the user of thefunctionality provided by an actionable user interface object.Typically, tool tips are not persistent, such that the tool tip appearswhen a pointer to the descriptive text hovers for a short period oftime, and the tool tip disappears after another short period of time.Furthermore, tool tips typically do not provide a mechanism for the userto provide input or otherwise interact with the tool tip to obtainadditional information about the data displayed within the contextwindow.

Windows allow the user to view information and return to the previoustask without closing the window or providing input. Such a window isreferred to as a modeless window. In contrast, a window that requiresthe user to either supply additional information or explicitly close thewindow is referred to as a modal window. Applications use modal windows,for example, in conjunction with menu items that require additionalinformation before proceeding. The user cannot switch back to the hostwindow that opened the modal window until the modal window is closed. Inother words, the modal window retains input focus and receives userinput from the keyboard or mouse until the modal window is closed. Modalwindows are simpler to manage than modeless windows because they arecreated, perform their task, and are destroyed by calling one or morefunctions in the display code for the window. However, modal windows donot allow a user to switch tasks at will.

A sidebar window typically is a narrow window providing a limited numberof selection options and/or a limited amount of data. Because a sidebarwindow and its contents are often referred to collectively as a sidebar,the term sidebar is used herein to describe both the sidebar window andthe contents of the sidebar window. The sidebar window is typicallypresented in conjunction with a larger display window that has space todisplay more data about a particular selection in the sidebar window.For example, sidebars may provide information such as news headlines orother content item descriptions, where the content item itself isavailable by clicking a hyperlink, also referred to herein as a link,associated with the content item description. When the link isactivated, the content item itself is typically displayed in a newwindow, thereby overlaying both the larger display window and thesidebar window.

The sidebar window and the larger display window can be siblings openedby a common parent window or in a parent/child relationship to oneanother. Either the sidebar window or the display window can serve as ahost of the other. For purposes of discussion of sidebar windows in thisdocument, the term sidebar window is not limited to a window beingpresented on the left hand side of the larger display window. The termsidebar window or sidebar is also used to refer to a window having alimited area for displaying data, whether the window is displayed on theleft hand side, right hand side, top, or bottom of the larger displaywindow.

The web operates under a request/response model for a client/serverenvironment, with the web client requesting a web page and the webserver providing the web page in response to the request. A web serverdoes not independently send web pages to the web client without firstreceiving a request for the data from the web client. Furthermore, theweb client and web server are connected only for the amount of time ittakes to send a response to the request, or, in a limited number ofimplementations, for a short period of time after receiving the responseto determine whether additional data are needed immediately. Such abrief connection after the response is received is sometimes referred toas a keep-alive connection, but most busy web servers do not providekeep-alive connections. Typically, no persistent connection is providedbetween a web server and web client when a request for a web page is notpending, thus limiting the web server's ability to communicateinformation to the web client. The web client's ability to operate onserver-provided data without sending a request to a server is limitedbecause the data are provided within an HTML document. Sending a requestwhenever additional data are needed expends resources and adds tocongestion over the network between the client and server.

When data are displayed within the same user interface but in differentwindows simultaneously, most applications try to ensure that the dataare consistent to avoid user confusion. Providing data consistencybetween user interfaces implemented using web browsers poses severalchallenges. For example, each web page provided by a web browser withina single user interface is typically provided by a different web browserinstance that is independent of the other web browser instances. Whenthe web page allows the user to change data, the web browser instancereceiving the change to the data displayed by the web page sends arequest to a web server to make the change. The web server changes thedata and sends a response to the web browser instance that requested tomake the change, where the response indicates that the change has beenmade. Because web browser instances must send a request to the server toreceive updated data, to ensure consistent simultaneous datapresentation, either web browser instance must continuously sendrequests to determine whether the data that it is capable of displayinghas changed. This solution is described as polling, but polling greatlyadds to the number of request to which the web server must respond,potentially overwhelming the web server. Another solution is to providea persistent connection to the web server, but then only a limit numberof web browser instances can be supported by each web server.

Due to the limitations of HTML, text such as a news headline wrapsaround to fit the entire text of the headline inside the window in whichthe text is presented. This wrap-around text uses additional verticalspace in the window, thus limiting the number of content itemdescriptions, such as headlines, that can be presented in the limitedspace provided in a window such as a sidebar.

To avoid this problem and enable additional content item descriptions tobe displayed within a narrow window, HTML provides the ability totruncate text instead of wrapping the text around to a second line.However, when the text of the content item description is truncated, theuser cannot view the full text of the content item description fromwithin the narrow window, even by scrolling the content itemsdescriptions in the narrow window. Furthermore, no indication that thetext has been truncated is provided, and the user may be unable todiscern whether the content item is of interest solely from thetruncated content item description. Therefore, the user must click on alink to view the available content without knowing whether the contentitem is of interest. This requirement defeats the purpose of providing acontent item description in the window and greatly limits the usefulnessof the window to the user.

What is needed is the ability to provide the capability for the user toobtain additional information about available content from within alimited area, such as a sidebar.

SUMMARY OF THE INVENTION

The present invention includes an apparatus, method, computer system,and computer program product to optimize space available for displayingdescriptions of content in a limited area, such as a sidebar. Space isoptimized by displaying only the maximum portion of the text describingeach selection that will fit within the limited area, thereby allowingspace to display additional selection item text descriptions in theremaining portion of the limited area. In one embodiment, a thin scrollbar is also provided to give additional space to display the maximumportion.

In one embodiment, positioning a pointer, such as a cursor displayed bya mouse, over the maximum portion of the text causes the completeportion of the text to be displayed. In some embodiments, the completeportion of the text can be displayed on one horizontal line to maximizethe vertical space within the limited area. In these embodiments, a webpage that was being displayed in the main browser window at the timethat the pointer was positioned continues to be displayed. The completeportion of the text can serve as a link to a content item described bythe text.

In another embodiment, when the link with reference to the completeportion is clicked, information related to the text can be displayed ina main browser window. The limited area displaying the maximum portionof the text continues to be displayed when information related to thetext appears in the main browser window.

In still another embodiment, space is optimized by using a thin scrollbar to provide additional space to display content within a window. Thethin scroll bar can be used for a window with contents provided by aclient application. The thin scroll bar can also be used for a window ina client application displaying server-provided content, such as a webpage having a scrollable area.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention may be better understood, and its numerousobjectives, features and advantages made apparent to those skilled inthe art by referencing the accompanying drawings.

FIG. 1A is an example of a user interface for a web application.

FIG. 1 is an example of a user interface provided by componentsimplemented in accordance with one embodiment of the invention.

FIG. 2 shows a menu of configuration options for a sidebar provided bycomponents implemented in accordance with one embodiment of theinvention.

FIGS. 3A through 3I provide examples of user interfaces produced by asystem implemented in accordance with one embodiment of the invention.

FIG. 3A shows the detailed visual portions of the embodiment of thesidebar of FIG. 1.

FIG. 3B shows an example of a menu presenting options for modules thatcan be selected for a given pane in the sidebar of FIGS. 1 through 3A.

FIG. 3C provides an example of a module toolbar for a mail module.

FIG. 3D provides an example of a module toolbar for a calendar module.

FIG. 3E shows an example of a complete content item description providedby a text presentation control that can be used in the sidebar of FIG.1.

FIG. 3F shows an example of the complete content item descriptionprovided by the text presentation control of FIG. 3E when the hostapplication window has been resized.

FIG. 3G shows an example of a web page provided when the completecontent item description of FIG. 3E is clicked.

FIG. 3H shows an example of a slideout window provided when a userclicks on text for a content description in a calendar module.

FIG. 3I shows the result of clicking on the event details link of FIG.3H.

FIG. 3J shows an example of a thin scroll bar used within the sidebar ofFIG. 3A.

FIG. 3K shows an example of a new browser window opened by a componentpresenting a portion of the sidebar of FIG. 3A.

FIG. 4A is an example of an architecture for a software system in whichthe present invention can be used to implement features of the userinterface shown in FIGS. 1 through 3J.

FIG. 4B shows interaction between the components of FIG. 4A inpresenting a user interface such as the user interface shown in FIGS. 1through 3J.

FIG. 5 is an example of a data flow through the software system of FIG.4A.

FIG. 6 shows an example of an architecture of a software system topresent the sidebar portion of the user interface of FIGS. 1 through 3J.

FIG. 7 shows an example of messages exchanged between the client andserver of the architecture shown in FIGS. 4A and 6.

FIG. 8 shows an example of messages exchanged between the client andserver of the architectures shown in FIGS. 4A and 6 to display moduleswithin a sidebar of a user interface.

FIG. 9 shows examples of interfaces used in the software architecturesof FIGS. 4A and 6.

FIG. 10A shows an alternative architecture for a software systemimplementing the user interface of FIG. 1 and providing notificationmessages to ensure that data displayed in a sidebar and in anindependent application window are consistent.

FIG. 10B shows a data flow through components in the alternativearchitecture of FIG. 10A.

FIG. 11 shows a data flow notifying sidebar control programs to updatedata displayed in the sidebar in response to a change to data within theindependent application window described with reference to FIGS. 10A and10B.

The use of the same reference symbols in different drawings indicatessimilar or identical items.

DETAILED DESCRIPTION

For a thorough understanding of the subject invention, refer to thefollowing Detailed Description, including the appended claims, inconnection with the above-described Drawings. Although the presentinvention is described in connection with several embodiments, theinvention is not intended to be limited to the specific forms set forthherein. On the contrary, it is intended to cover such alternatives,modifications, and equivalents as can be reasonably included within thescope of the invention as defined by the appended claims.

In the following description, for purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the invention. It will be apparent, however, to oneskilled in the art that the invention can be practiced without thesespecific details.

References in the specification to “one embodiment” or “an embodiment”means that a particular feature, structure, or characteristic describedin connection with the embodiment is included in at least one embodimentof the invention. The appearances of the phrase “in one embodiment” invarious places in the specification are not necessarily all referring tothe same embodiment, nor are separate or alternative embodimentsmutually exclusive of other embodiments. Moreover, various features aredescribed which may be exhibited by some embodiments and not by others.Similarly, various requirements are described which may be requirementsfor some embodiments but not other embodiments.

Introduction

Described herein is a system designed in accordance with a frameworkhaving many inventive features that provide a user-friendly,sophisticated user interface. An example implementation of thisframework is described in detail with reference to FIGS. 4A through 11below, and particularly with reference to FIGS. 4A, 6 and 10A. Thesystem providing the user interfaces shown herein operates in accordancewith this framework and uses web browsers processing HTML documents toproduce web pages. The system is capable of incorporating bothclient-side and server-side functionality and is easily extended toprovide additional functionality without the need to change anapplication program on the client. This system serves as an example of asystem in which the present invention can be used, although it is not arequirement that every feature provided by the framework be used for theinvention to operate.

The components described herein that can be used to implement theinvention operate in accordance with the Component Object Model (COM),which is a standard (not a product) that defines how components interactto provide functionality. Microsoft provides a technology referred to as“ActiveX” that operates in accordance with the COM standard and providesfor the implementation of components referred to as “Active X controls.”Other software companies have implemented components using othertechnologies, but also refer to their components as “controls.” It isnot a requirement of the invention that the controls described hereinare implemented using ActiveX or any other technology. In commonpractice, the term control is sometimes used to refer to the controlsoftware program as well as to the visual portion of the user interfacethat is displayed by the control software program. However, to clarifythe terminology used herein, the control software program is referred toas a “control program,” and an instantiation of an object to provide thefunctionality of the control program is referred to herein as a “controlinstance.” The visual portion displayed by the display code of thecontrol program is referred to as a “control window.” When the visibleportion is a control window that includes a web page, the terms “webpage” and “control window” are used interchangeably because a web pageis presented within a window by default by a web browser control. Forconsistency, a program that is not a control, such as a web serverprogram, is referred to as a “program,” and an executing version of theprogram is referred to as an “instance.” For example, instances of webserver programs are referred to herein as “web server programinstances,” instances of applications are referred to herein as“application instances,” and executing scripts are referred to as“script instances.”

The term script is used herein to refer to a program downloaded in anHTML document and executed by a web browser. One of skill in the artwill understand that the use of the term script is not intended to belimiting and simply serves as an example of a type of program that canbe executed within a web browser. Another type of program that can beexecuted within a web browser is binary code. Binary code is interpretedby a program or hardware processor that is capable of understanding theformat of instructions and data within the binary code.

Binary code that is interpreted by a hardware processor is oftenreferred to as “executable code,” “object code,” or “native code.” Forexample, many computer languages, such as C and C++, require that aseparate compiler be used to produce binary code for each computerplatform—that is, for each computer operating system and the hardwareset of instructions upon which the platform is built. The correctcompiler must create the binary code for the hardware processor toexecute the binary code.

One example of binary code interpreted by a program is bytecode. Aprogram usually referred to as virtual machine processes bytecode,rather than the hardware processor. The virtual machine converts eachgeneralized machine instruction into a specific machine instruction orinstructions that the host computer's processor will understand.Bytecode is the result of compiling source code written in a languagesupported by a given virtual machine. One example of a language thatuses the bytecode and virtual machine approach is Java.

A control that enables a user to view web pages is referred to as a webbrowser control. A web browser control receives an HTML document asinput and displays a web page for browsing (viewing) by a user. Becausethe web page is provided within a window by default, the web page isalso referred to herein as a control window. For example, a web browserapplication, such as Microsoft Internet Explorer, provides web browsingfunctionality and serves as a host for a web browser control. The hostapplication serves as a container for the web browser control, which, inturn, can serve as a host or container for another control. The othercontrol can considered to be nested within the host control that servesas its container.

Using a web browser control, web pages can be browsed and data (embeddedwithin or referred to within a web page) can be downloaded. Furthermore,a web browser control supports running scripts that are embedded in aweb page. Web browsing is supported through both point-and-clickhyperlinks and Uniform Resource Locator (URL) navigation to a web page.A standard web browser control supports scrolling automatically when theweb page is too large to fit within the window provided by the webbrowser control, window resizing, and other standard windowfunctionality.

As a result of the requirement that a component or control run within acontainer/host application or control, executable code for the controlmust be accessible to the container to load and run. In a client/serverenvironment, the container can be a client application program, so thatexecutable code must be accessible by the client computer system. In aclient/server system operating under a request/response model, eitherthe control executable code must be installed on the client computersystem (as a .EXE file or other binary file) or the client must send arequest to obtain executable code in the form of a response (HTMLdocument) from the server. The HTML document can provide executable codein the form of scripts or control executable code, such as a dynamiclink library (DLL) file. The request establishes a connection betweenthe client and the server that is otherwise not provided when a requestis not pending. This requirement has limited the ability of enterprisesdesiring to provide sophisticated user interfaces for applications thatare to be accessed via the Internet.

FIG. 1A is an example of a user interface for a web browser application.Browser window 104 includes columns 104A and 104B and scrollbar 109.Scrollbar 109 is included within a browser window, such as browserwindow 104, only when the contents of the web page cannot be displayedwithin the vertical space available to the browser window. Each ofcolumns 104A and 104B within browser window 104 can display contentitems in the form of web pages and/or links to web pages. In column104A, descriptions of content items are shown, such as content itemdescriptions 106A and 106B. When one of the content item descriptions isselected, typically a web page is presented within browser window 104,overwriting columns 104A and 104B.

Content item description 106A is selected by pointer 108 by positioningpointer 108 over the text of content item 106A. Pointing to a userinterface object in this manner is sometimes referred to as a mouseoverevent, mouseover, rollover event, rollover, hover event, or hovering.When a pointer is positioned over a content item description, such aspointer 108 over content item description 106A, and no separate icon orbutton is displayed for the user to activate, the content itemdescription is typically, but not necessarily, underlined (as shown forcontent item description 106A) to indicate to the user that the contentitem description is an actionable user interface object, providing alink to a related content item. An actionable user interface object canbe activated by performing another event, such as clicking pointer 108on the link represented by content item description 106A. Activating thetext displayed as a content item description 106A invokes the webbrowser, which sends a request to a web server and receives an HTMLdocument that is processed to display the content item/web page (notshown).

Content item description 106B is not underlined because pointer 108 isnot positioned over the respective content item description and the linkto the associated content item web page cannot be activated withoutfirst positioning pointer 108 over content item description 106B. Themulti-line displays for content item descriptions 106A and 106B limitthe number of content item descriptions that can be displayed withinbrowser window 104, particularly when the content item descriptions arevery long.

The system and methods described herein optimize space available fordisplaying text descriptions in a limited area, such as a sidebar. Inone embodiment, space is optimized by displaying only the portion of thetext describing each selection that will fit within the limited area,thereby allowing space to display additional selection item descriptionsin the remaining portion of the limited area. In some embodiments, athin scroll bar is provided to maximize the available space within thelimited area for the maximum portion of the text. To compensate for thedisplay of a very limited amount of text describing the content, acomplete portion of the text is accessible by pointing to the maximumportion of the text that is displayed. For example, a user may positiona pointer, such as a mouse, with reference to the maximum portion of thetext that is displayed.

The complete portion of the text is displayed in response to a mouseoverevent occurring with reference to the maximum portion that is displayed.In some embodiments, in response to a mouseover event with reference tothe maximum portion of the text, the complete portion of the text isdisplayed on one horizontal line to maximize the vertical space withinthe limited area. The complete portion of the text can serve as a linkto the information described by the maximum portion of the text inresponse to a second event, such as a click event, occurring withreference to the complete portion of the text.

In contrast to the behavior of a standard link, in another embodiment,the window displaying the maximum portion of the text does not disappearafter the link with reference to the complete program is clicked. Inaddition, a web page that was being displayed in a main browser windowat the time that the mouseover event occurred is not replaced. Thelimited area displaying the maximum portion continues to be displayedwhen the information described by the complete portion of the textappears in the main browser window.

FIG. 1 is an example of a user interface provided by componentsimplemented in accordance with one embodiment of the invention. A userinterface 110 includes a sidebar 120 and a main browser window 125. Webpage 190 is presented in main browser window 125 (content details notshown). In the example shown, the application presenting user interface110 uses standard HTML documents as input to display sidebar 120 and webpage 190. Sidebar 120 is presented with three panes providing userinterfaces for selected sidebar modules. In the example shown in FIG. 1,sidebar 120 includes panes for three sidebar modules, a mail module130A, a weather module 130B, and a calendar module 130C.

In the embodiment shown in FIG. 1, each of sidebar modules 130A, 130B,and 130C within sidebar 120 can be implemented as either a web browsercontrol, in which case the sidebar module displays a web page byinterpreting an HTML document obtained from a web server using standardHTML, or as a client control, where the client provides the source codeand functionality for the sidebar module.

FIG. 2 shows a sidebar 220 with a main sidebar toolbar 223 and a menu226 presented by main sidebar toolbar 223. Menu 226 is an example of amenu provided to allow the user to specify a configuration for aspecialized window such as sidebars 120 and 220.

In the embodiment shown, up to three panes can be selected, although anynumber of panes and/or modules can be supported in a sidebar implementedin accordance with the invention. The checkmark next to the Triple Paneoption indicates that three panes are currently active, as shown, withone of the three panes hidden by menu 226. Other options include anoption to move the sidebar to the right side of the screen, to reloadthe sidebar, and to close the sidebar. In one embodiment, menu 226 isimplemented by a menu presentation control that provides an interfacethrough which a calling program can provide text for the optionsprovided on the menu. It is not required that the menu presentationcontrol be implemented within the framework for the system describedherein. In one embodiment, configuration data such as the configurationoptions specified using menu 226 are stored on a server and provided tothe client when the specialized window is to be displayed.

Referring to main sidebar toolbar 223, a toolbar is a control windowthat contains one or more buttons. Each button, when clicked by a user,sends a message to the application or control program hosting the windowwithin which the button is provided. When the application or controlprogram receives the message, the application or control programperforms a command indicated by the message. Typically, the buttons in atoolbar correspond to commands in the application's or control's menu,providing an additional and more direct way for the user to access anapplication's or a control's commands. In this example, main sidebartoolbar 223 provides a button that provides a dropdown menu, such asmenu 226, when clicked, in addition to the standard close window button.

FIGS. 3A through 3J provide examples of user interfaces produced by asystem implemented in accordance with the framework described above.FIG. 3A describes the detailed visual portions of a sidebar, using theexample of sidebar 120 of FIG. 1. As described with respect to FIG. 2,sidebar 120 includes sidebar main toolbar 223.

Referring to FIG. 3A, in one embodiment, sidebar 120 is rendered as asingle web page by an ActiveX control, which is instructed to configurethe display of sidebar modules within sidebar 120. As mentioned above,it is not a requirement of the invention that sidebar 120 be rendered bya control implemented using Active X or any other technology. Threepanes are shown in sidebar 120, with a pane 324A hosting mail module130A, a pane 324B hosting weather module 130B, and a pane 324C hostingcalendar module 130C. Each of panes 324A, 324B, and 324C of sidebar 120includes a module titlebar, respectively module titlebars 331A, 331B,and 331C, here entitled “Mail,” “Weather,” and “Calendar.”

The module titlebar can provide a shortcut menu of options for a user toselect a sidebar module to include in the respective pane of thesidebar. In one embodiment, the module titlebar is implemented by theseparate menu presentation control configured to operate within theframework described herein, as described with reference to FIG. 2.Module titlebars 331A, 331B, and 331C enable the user to customize apane within the sidebar to display data for one of a number of availablesidebar modules. The list of available sidebar modules is provided by aserver in communication with the application presenting the userinterface. An illustration of the menu of sidebar module optionsprovided by each of module titlebars 331A, 331B, or 331C is given inFIG. 3B.

FIG. 3B shows an example of a menu presenting options for sidebarmodules that can be selected for a given pane in sidebar 120 of FIG. 1.By clicking on module selection button 331A button, the user ispresented with options for selecting the sidebar module to appear in therespective pane in module options menu 312. As shown by the checkmarknext to the “Mail” module option, the mail module is currently selectedfor the respective pane (although the mail module is partially hidden bymodule options menu 312).

In one embodiment of the system implemented according to the frameworkdescribed herein, the list of choices of modules is provided by a serverwithin an HTML document, which includes embedded data describing theavailable sidebar modules and an embedded script to cause the menupresentation control described above to render module options menu 312.With the server controlling the list of available sidebar modules, theclient application program using the sidebar, such as the Yahoo! browsershown in the example, can be distributed once, without the need toupgrade the client application program when new sidebar modules becomeavailable. This framework enables the client user interface to be easilyextensible to perform new functionality.

Referring again to FIG. 3A, each pane 324A, 324B, and 324C in sidebar120 can be manipulated like an ordinary window; for example, each panecan be resized, and the other two panes within sidebar 120 are resizedin response to enable as much data as possible to be displayed for allthree sidebar modules. The sidebar can be configured to intelligentlydisplay relevant data when the corresponding pane is resized. Forexample, in the calendar module, when pane 324C is made smaller, contentdescriptions with dates farthest from the current date can be eliminatedfrom the display within pane 324C. The current date and other dates thatcan be displayed within the smaller pane are displayed.

Each of panes 324A, 324B, and 324C includes a respective module toolbar132A, 132B, and 132C. Module toolbars 132A, 132B, and 132C include iconsspecific to the module for which data are being displayed in therespective pane. Module toolbars are described in further detail inFIGS. 3C and 3D.

FIGS. 3C and 3D provide examples of module toolbars for mail module 130Aand calendar module 130C of FIG. 1. In FIG. 3C, mail module toolbar 132Aincludes buttons 133A, 135A, 137A, and 139A. Inbox button 133A enablesthe user to go to the user's Inbox, which will appear in the displaywindow adjacent the sidebar, such as main browser window 125 of FIG. 1.Compose button 135A provides a separate window in which the user cancompose and send a mail message, without affecting the web page that iscurrently displayed in the display window adjacent the sidebar, such asmain browser window 125 of FIG. 1. An example of a new browser window inwhich a mail message can be composed is provided in FIG. 3K discussedbelow. In one embodiment, refresh button 137A can update, or refresh,the data displayed by the mail module 130A in both the sidebar and thedisplay window if the mail module is currently displayed in the displaywindow; this functionality is described further with reference to FIGS.10A, 10B and 11 below. More button 139A provides a menu such as the menushown in More Button Menu 139A_menu. More button Menu 139A_menu isanother example of a menu presented by menu presentation controldescribed with reference to FIG. 2.

When options selection 139AOptions_selection is selected, aconfiguration window for presentation of the mail module within thesidebar appears. Mail Options configuration window 139AOptionsconfiguration provides an example of such an options configurationwindow. In the example shown, the user can select a number of messagesto preview, choose folders from which to view messages, indicate whetherunread messages only are to be displayed, indicate whether to includeshortcut links to all folders, and select whether to provide aconfirmation prompt whenever the user chooses to delete a message. Theseconfiguration options, also referred to as user preferences, are storedby the server and provided to the client whenever the mail module is tobe displayed. These configuration options are used to configure thedisplay of the mail module and data provided by the mail module when themail module is displayed within the sidebar.

FIG. 3D provides an example of a module toolbar for a calendar module.Calendar module toolbar 132C includes buttons 133C, 135C, 137C, and139C. Button 133C enables the user to go to Yahoo! Calendar, which willappear in the display window adjacent the sidebar, such as main browserwindow 125 of FIG. 1. Button 135C provides a separate window in whichthe user can add a new event to the calendar, without disturbing the webpage currently displayed in the display window adjacent the sidebar,such as main browser window 125 of FIG. 1. Button 137C enables the userto refresh the data displayed by calendar module 130C in sidebar 120.Button 139C is a “More” button, which when clicked, provides a menu (notshown), such as More Button Menu 139A_menu in FIG. 3C having an optionsselection such as 139AOptions_selection. The user would choose theoptions selection and, in response, calendar options configurationwindow 139COptions_configuration would appear. In the example shown, theuser can select a daily, weekly, or monthly view; specify a number ofdays to preview; provide start and end times for the user's workday;specify a number of hours in the user's workday; and designate a day ofthe week with which to start the calendar. These configuration options,also referred to as user preferences, are used to configure the displayof the calendar module and data provided by the calendar module when thecalendar module is displayed within the sidebar.

Referring again to FIG. 3A, displayed within panes 324A, 324B, and 324Care content item data for content items accessible via the respectivesidebar modules. Pane 324A includes data for mail module 130A, withcontent item data 334A-1. In the example shown, content item data 334A-1represents a mail message in the user's Inbox. Content item data 334A-1also includes partial content item description 334A-text, which isdescribed in further detail below, and mail operations icon 133. Mailoperations icon 333 can be clicked to access a menu of options (notshown) for performing operations on the mail message represented bycontent item data 334A-1. For example, the menu can include options toread the respective mail message (here message 334A-1) within anexisting display window, such as main browser window 125 of FIG. 1; readthe mail message in a new window (thereby not affecting a web pagedisplayed in main browser window 125); delete the mail message; mark themail message as read; or flag the mail message for follow-up. In oneembodiment, if the mail message is displayed in a second display window,such as main browser window 125 of FIG. 1, the control providing thesecond display window can be notified so that the data can be refreshedto be consistent with the change made in the sidebar mail module.Further details about such notifications are provided below withreference to FIGS. 10A, 10B, and 11, which discuss an embodiment of asystem having such an event notification feature.

Mail module 130A and messages presented by mail module 130A, such ascontent item data 334A-1, are displayed in accordance with mailconfiguration options configured by the user using the configurationwindow discussed with reference to FIG. 3C. These mail configurationoptions are also referred to herein as user preferences.

Pane 324B includes data for weather module 130B, with content item data334B-1 and 334B-2, showing weather for two cities selected by the user.Pane 324C includes data for calendar module 130C, with content item data334C-1 and content item data 334C-2 (in addition to content item datafor the dates Jul. 9-12, 2003 that are not labeled). Each set of contentitem data in the calendar module represents a given date and includesevents scheduled for that date. None of the dates in the example of FIG.3A have scheduled events.

Partial content item description 334A-text is provided by a textpresentation control implemented within the framework described herein,although the text presentation control can be implemented and usedoutside the framework. The text presentation control described hereinprovides an interface through which a calling program can provide plaintext and a URL associated with a web page to be displayed. Display codein the control program for this text presentation control presents theplain text, such as partial content item description 334A-1text, in aform that can be activated by the user to perform additional functions,as if the plain text served as an actionable user interface object. Inthis example, partial content item description 334A-text is truncatedtext from the subject line of the associated mail message.

In the example shown in FIG. 3A, partial content item description334A-text is truncated, followed by an ellipsis to indicate that thepartial content item description 334A-text includes additional text. Thecontrol program for the text presentation control determines the maximumportion of the content item description text that can be displayedwithin the sidebar (allowing for the addition of the ellipsis). Thistext presentation control is discussed in further detail with referenceto FIGS. 3E, 3F, and 3G below.

FIG. 3E shows the result of a mouseover event with reference to partialcontent item description 334A-text of FIG. 3A. In FIG. 3E, when amouseover event occurs with reference to partial content itemdescription 334A-text, a complete content item description 314 isdisplayed (overlaying content item description 334A-text in thisexample). The text presentation control underlines the text of completecontent item description 314, indicating that the complete content itemdescription 314 serves as a link to the content item described. When theuser clicks on complete content item description 314, the associated webpage/content item can be presented either within an existing displaywindow, such as main browser window 125 of FIG. 1, or in a newly-createdwindow, thereby enabling the web page within the existing main browserwindow to remain unchanged. This newly-created window enables the userto perform additional functions from within the sidebar, such assearching or viewing details about a particular content item, withoutchanging the originally-displayed web page in the existing main browserwindow. In the example shown in FIG. 3E, complete content itemdescription 314 overlays data displayed by web page 190.

FIG. 3F shows an example of a complete content item description 316provided by the specialized text presentation control of FIG. 3E whenthe host application window 318 has been resized. The display ofcomplete content item description 316 is not limited by the size of thewindow 318 containing the display for the host application. Instead,complete content item description 316 is limited only by thecapabilities of the physical display device displaying the userinterface for the host application. In contrast, HTML does not displayinformation outside the host application window in which the text ispresented (and thus wraps text within the sidebar, greatly reducing thespace available for showing additional content descriptions). Completecontent item description 316 overlays data displayed on the desktop ofthe computer system on which the client application is running.

FIG. 3G shows an example of a content item 334A-content_item (here amail message) provided within a main browser window such as main browserwindow 125 when complete content item description 314 of FIG. 3E isclicked. Content item 334A-content_item is presented in main browserwindow 125 simultaneously with content item data 334A-1 being presentedwithin the sidebar. In one embodiment, because the user can manipulatethe mail message that is simultaneously being displayed by the sidebar,a control displaying data for the same content item in the sidebar canbe notified so that the data can be refreshed to be consistent with thechange made in the main browser window 125. Further details about suchnotifications are provided below with reference to FIGS. 10A, 10B, and11, which discuss an embodiment of a system having such an eventnotification feature.

In one embodiment of the invention, a separate text presentation controlsuch as that described with reference to partial content itemdescription 334A-text of FIG. 3A is provided for each content itemdescription displayed. When a pane for a module within the sidebar isresized, each of the multiple text presentation controls re-draws arespective image of the associated partial content item descriptionwithin the module. In the embodiment with multiple text presentationcontrols, a large number of control windows on a web page slowsscrolling of the web page, because the content item descriptions must bere-drawn repeatedly as the web page is scrolled.

In another embodiment, a single text presentation control such as thatdescribed with reference to partial content item description 334A-textof FIG. 3A is operable for all text within the sidebar. In theembodiment with a single text presentation control, HTML code for themodule provides the specialized text presentation control with the textto be displayed, the dimensions of the pane in which the text is to bedisplayed, the font and color of the text to be displayed, and the nameof a script function to invoke when the text presentation control isactivated. The HTML code for the module requests the text presentationcontrol to calculate the amount of text that can be displayed within thearea available in the existing pane. The HTML code receives the amountof text from the text presentation control and displays that amount oftext. Because HTML code is displaying the information, rather thanseveral text presentation controls that repeatedly redraw the image, theweb page appears to scroll more smoothly to the user. When a windowcontaining text is resized in an embodiment with a single textpresentation control, an executing script recognizes that the window hasbeen resized and dynamically generates script instructions to displaythe text to conform to the resized window.

Upon detecting an event such as a cursor pointing to the truncated text,a script instructs the text presentation control to display the fulltext in that position. The text presentation control overlays thecomplete content item description on top of the web page generated fromthe HTML document. Overlaying the text enables the image to be displayedoutside the boundaries of the host application window, functionalitywhich currently is not possible using standard HTML.

One of the challenges of providing a text presentation control such asthat described with reference to FIGS. 3A and 3E through 3G is providingthe capability to correlate the HTML concept of font with the Windowsoperating system concept of font. HTML code is independent of theoperating system in which the HTML code is run, whereas Windows commandsare specific to the Windows operating system. Calculating text that canbe presented within a given window such as a sidebar requiresdetermining the size of the window (provided by the Windows operatingsystem) and determining the number of text characters that can bepresented by HTML code within that window. In one embodiment, thischallenge was overcome by implementing “window size to text size”conversion functions as part of the text presentation control. In oneembodiment, HTML tables are used to enable the text presentation controlto display the truncated and full text as described above.

As mentioned above, it is not required that the text presentationcontrol be implemented within the framework for the system describedwith reference to FIGS. 4 through 11 below. In one embodiment, the textpresentation control provides an interface through which a callingprogram can provide text and a URL for a web page to be displayed. Theinterface also provides functions that can be used to specify a font forthe text and behavior when the text is clicked.

Another feature provided by one embodiment of the system describedherein is a slideout window providing additional information about thecontent item described by the content item description shown in thesidebar. The slideout window functionality is described further withreference to FIGS. 3H and 3I.

FIG. 3H shows an example of a slideout window 313 provided when a userclicks on text for a content item description 309 in the calendarmodule. In the example, the user has clicked on the text for contentdescription 309 entitled “7:00 meeting,” and slideout window 313 ispresented. The user can view basic information about the event in theslideout window 313, and if desired, view event data details by clickingon link 315. Rather than acting as a link directly to the content item,content item description 309 serves as a way for the user to accessadditional information about the content item before deciding whether toclick on the link. Furthermore, this additional information is availablewithout replacing existing web page 190 displayed in main browser window125.

FIG. 3I shows the result of clicking on the event details link 315 ofFIG. 3H. A web page 311 providing the event details for the eventdescribed in content item description 309 is opened in main browserwindow 125, replacing web page 190 previously displayed. Several fieldscan be updated, including title 317; event type 318; date 319A, 319B,and 319C; time 329, and several other fields not shown. When editing theevent data is complete, the data entered is provided in the form of anHTTP request to the server originally providing web page 311. The serverthen posts the data to a server-side data store.

FIG. 3J provides further discussion of thin scroll bars 373A, 373B, and373C used in the sidebar of FIG. 3A. When the content to be displayed ina window is too large to fit within the window, a scroll bar isautomatically provided as a function of the standard window control.However, few features of the scroll bar can be customized, and it is notpossible to adjust the width of the scroll bar using HTML. With the verylimited space of the sidebar, a thinner scroll bar can enable additionalcontent item description text to be displayed.

In FIG. 3J, main browser window 125 has a standard width scroll bar 375,and each of modules 130A, 130B, and 130C has a respective thin scrollbar 373A, 373B, and 373C. In one embodiment of the invention, a controlprogram intercepts standard window control messages sent to draw thescroll bar for each pane within sidebar 120 and draws a thinner scrollbar in place of the scroll bar provided by the standard window control.The control program provides scrolling instructions and messages toreposition the thinner scroll bar within the window provided by thestandard window control. This control program, and other controls usedto implement the sidebar displayed in FIG. 3A, is described below withreference to FIGS. 4 through 11.

FIG. 3K shows an example of a new browser window 325 opened by acomponent the compose button 339B discussed with reference to FIG. 3Cabove. Compose web page 377 overlays main browser window 125 but, whenclosed, main browser window displaying web page 190 remains unchanged.

FIG. 4A is an example of an architecture for a software system forcomponents implementing the user interface of FIGS. 1 through 3J inaccordance with one embodiment of the invention. Client applicationprogram 410App represents a client application program running on aclient computer system (not shown) of a client/server system. Clientapplication 410App communicates via network 402 with standard web serverprogram 494 and specialized (sidebar) web server program 495Web, whichincludes specialized (sidebar) server program 495 sb that providesfunctionality specific to displaying a sidebar or other window not in asidebar format. Each server program 494 and 495Web represents serversoftware on a server computer system (not shown) for the client/serversystem 400.

Client application 410App includes two control programs, a specialized(sidebar) web browser control program/sidebar host 420Ctl (also referredto as specialized web browser control program 420Ctl) and a standard webbrowser control program 490Ctl. Each of specialized (sidebar) webbrowser control program 420Ctl and standard web browser control program490Ctl provides standard web browser control functionality of renderingweb pages from HTML documents.

Specialized web browser control program 420Ctl is configured tocommunicate with a server program, such as specialized (sidebar) webserver program 495Web, which provides both web server functionality andspecialized functionality for providing instructions to render web pagesin a specialized format, shown here in a sidebar format.

In the embodiment shown in FIG. 4A, each of standard web browser controlprogram 490Ctl and specialized web browser control program 420Ctl can beconsidered to operate independently of the other. Each of controlprograms 490Ctl and 420Ctl independently communicates with itsrespective web server program, respectively standard web server 494 andspecialized (sidebar) web server 495Web, and neither of control programs490Ctl and 420Ctl is nested within the other. As a result, datapresented by one of control programs 490Ctl and 420Ctl is notnecessarily available to the other. Further information aboutcommunication of information between control programs 490Ctl and 420Ctlis provided with reference to FIGS. 10A, 10B, and 11 below in thediscussion pertaining to an event notification feature.

Client application 410App can be a specialized web browser application,such as Yahoo! Browser provided by YAHOO! Inc. of Sunnyvale, Calif.Alternatively, client application 410App can be another applicationusing web technology to present information that has also been adaptedto use the technology described herein. An example of an adaptation foran application to use the framework described herein is that theapplication should include a control program or other program configuredto receive instructions for displaying information provided by a server(via a script in an HTML document or another mechanism for providing theinstructions in a format that can be executed by a web browser controlprogram).

FIG. 4B shows a data flow through instances of components in the examplearchitecture shown in FIG. 4A. Using instructions provided byspecialized (sidebar) web server program instance 495Web-i 4, clientapplication program instance 410App-i 4 produces a user interface 410-w4, which, in this example, includes a web page/sidebar control window420-w 4 rendered from an HTML document provided by specialized (sidebar)server program instance 495 sb-i 4. User interface 410-w 4 also includesa web page/sidebar control window 490-w 4, which is a standard web page.An example of one embodiment of user interface 410-w 4 is provided inFIG. 1 as user interface 110, where sidebar 120 corresponds to webpage/sidebar control window 420-w 4 and web page 190 corresponds to theweb page/standard web browser control window 490-w 4.

One of skill in the art will recognize that the particular form of userinterface 410-w 4 is but one example of the types of user interfacesthat can be provided using the methods, framework, and systems describedherein. It is not necessary, for example, that a separate web page, suchas web page 190 alongside sidebar 120 of FIG. 1, be provided and thatthe user interface include a sidebar configured to display modulesand/or data in a particular format, such as sidebar 120. It is withinthe scope of the invention that modules displayed within a sidebarcontrol window such as web page/sidebar control window 420-w 4 insteadcan be arranged in a different format. While the examples describedherein often include discussions of configuring or displaying a sidebar,one of skill in the art will understand that these discussions areincluded as examples only and that the content of the user interface andsidebar may be provided in other formats.

FIG. 5 is an example of a data flow through the software system of FIG.4. Action numbers are included in FIG. 5, as well as in subsequentfigures, to guide the reader through the data flow. The order in whichsome of the actions are performed is not relevant; for example, actions5.1.1 and 5.1.2 can be considered to occur simultaneously or in eitherorder. In action 5.1.1, standard web browser control instance 490Ctl-i 5sends a request 522A for an HTML document to render to standard webserver 494 instance 495-i-5. For example, when client applicationinstance 410App-i 5 is started, a user's pre-specified home page can beloaded into the main browser window, as represented by web page/standardbrowser control window 490-w 5. In action 5.1.2, specialized (sidebar)browser control instance/sidebar host instance 420Ctl-i 5 sends request522B to specialized (sidebar) web server program instance 495Web-i 5.When client application instance 410App-i 5 is started, a URL for atop-level sidebar page, represented as 420Ctl-URL in FIG. 4, can beincluded in request 522B to obtain an HTML document to configure anddisplay web page/sidebar control window 420-w 5.

In action 5.2.1, standard web server instance 494-i 5 provides web pageHTML document 522A-H in response to request 522A to standard web browsercontrol instance 490Ctl-i 5. In action 5.2.2, specialized (sidebar) webserver program instance 495Web-i 5 provides HTML document 522B-H inresponse to request 522B to specialized (sidebar) web browser controlinstance 420Ctl-i 5. HTML document 522B-H includes sidebar script 540,which includes encoded data 598. Sidebar script 540 is a program encodedin an interpreted language, such as JavaScript, which executes when HTMLdocument 522B-H containing sidebar script 540 is loaded by a web browsercontrol program instance, such as specialized web browser controlinstance 420Ctl-i 5.

Encoded data 598 can include, for example, sidebar configuration datastored on the server computer system (not shown) hosting specialized(sidebar) web server 495Web-i 5 regarding the number of modules toinclude in the sidebar discussed with reference to FIG. 2 or userpreferences configuration data discussed with reference to FIGS. 3C and3D. Data 598 may also include data obtained by specialized (sidebar)server program instance 495 sb-i 5 from another server program instance(not shown); for example, specialized (sidebar) server instance 495 sb-i5 may retrieve other data from another server to initially configurepresentation of a module indicated by the configuration information,such as calendar module 130C of FIG. 1. In action 5.3, specialized webbrowser control instance 420Ctl-i 5 loads HTML document 522B-H, and inaction 5.4, sidebar script instance 540-i 5 executes. As a result ofexecution of the script, in action 5.5.1, web page/sidebar controlwindow 420-w 5 is presented. Data 598 can be used to configure webpage/sidebar control window 420-i 5 and/or can be presented withinsidebar control window 420-w 5, as shown. In action 5.5.2, web page490-w 5 is presented by standard web browser control instance 490Ctl-i5.

FIG. 6 shows an example of a detailed software architecture forcomponents to present a user interface, such as the user interface 110of FIG. 1, including a specialized window, such as sidebar 120, or otherspecialized window in which a user can interact with multiple modules.This example architecture describes one implementation of a framework600. Other implementations of sidebar software framework 600 may includeadditional components and control programs or fewer components andcontrol programs than those shown in FIG. 6. As described above, clientapplication 410App provides a user interface, such as user interface 110of FIG. 1. Specialized (sidebar) web browser control program 420Ctloperates in conjunction with a specialized server program (such asspecialized (sidebar) server program 495 sb of FIG. 4, not shown here).The specialized server program can provide both information to displayand instructions, such as sidebar script 540 and data embedded therein,to a specialized control program, such as specialized (sidebar) webbrowser control program 420Ctl, for displaying the information.

Specialized (sidebar) web browser control program/sidebar host 420Ctldoes not provide a visible portion of the user interface, but insteadserves as a host for other components that display a specialized window,such as sidebar 120 of FIG. 1. Sidebar script 540 is a script program,which also does not provide a visible portion of the user interface, butinstead configures the display provided by another control program, suchas sidebar control program/sidebar container 650Ctl. A specializedscript, such as sidebar script 540, is provided by a specialized serverprogram (such as specialized (sidebar) server program 495 sb of FIG. 4and the respective instance 495 sb-i 5 of FIG. 5) as part of an HTMLdocument, such as HTML document 522B-H of FIG. 5. The instructionsincluded in sidebar script 540 instruct sidebar control program/sidebarcontainer 650Ctl to present modules, toolbars, and other user interfaceobjects within a sidebar (or other specialized window). Sidebar controlprogram/sidebar container 650Ctl passes appropriate instructions to thecontrol programs for which it serves as a container.

The web page produced by specialized (sidebar) web browser controlprogram/sidebar host 420Ctl provides modules (within panes of aspecialized window, such as a sidebar) and toolbars within thespecialized window. Five control programs are illustrated within sidebarcontrol/sidebar container 650Ctl, including client-based module controlprogram 630ACtl for presenting client-based modules such as calendarsidebar module 130C of FIG. 1. Sidebar control program/sidebar container650Ctl also includes another module control, web module client wrappercontrol program 630BCtl, for presenting web-based modules such as mailmodule 130A weather module 130B of FIG. 1.

A client-based module control program, such as client-based modulecontrol program 630ACtl, is hosted directly by a client computer systemrunning client application 410App. Although data to display byclient-based module control program 630A can be obtained from a webserver such as standard web server 494 of FIG. 4, the content presentedwithin the client-based module window is laid out directly byclient-based module control program 630ACtl without instructions fromspecialized (sidebar) web server program 495Web. However, thepresentation of the module itself within a specialized window presentedby sidebar container 650Ctl is configured by sidebar script 540. Forexample, referring back to FIG. 3A, client-based modules, such ascalendar module 130C, which are presented by client-based module control630ACtl, and web-based modules, such as mail module 130A and weathermodule 130B, are no different in appearance. All modules have the samelook and feel to a user; for example, all modules havesimilarly-configured module titlebars 331A, 331B, and 331C; moduletoolbars 132A, 132B, and 132C; and thin scroll bars 373A, 373B, and373C.

Referring again to FIG. 6, web module client wrapper control program630BCtl represents a control program having a web host. To present amodule, web module client wrapper control program 630BCtl receives inputin the form of an HTML document provided by the specialized (sidebar)web server program 495Web. Within the HTML document provided is aserver-provided module script 640 s from a specialized (sidebar) webserver program, such as specialized (sidebar) web server program 495Webof FIG. 4. Web module client wrapper control program 630Ctl translatesfunction calls from other control programs, such as sidebar controlprogram/sidebar container 650Ctl, into control-generated scriptinstructions, represented by control-generated module script 640 g. Thedotted line around control-generated module script 640 g indicates thatthe instructions within do not exist prior to loading another script,such as server-provided module script 640 s, by an instance of webmodule client wrapper control program 630Ctl. The generated scriptinstructions invoke other instructions provided within server-providedmodule script 640 s to present the module.

The control-generated script instructions provided by control-generatedmodule script 640 g enable server-provided module script 640 s toreceive instructions from other control instances for displaying theweb-based module within the sidebar; for example, the control-generatedscript instructions can specify the pane in which the web-based module,such as mail module 130A, is to be presented. The control-generatedscript instructions provided by web module client wrapper controlprogram 630BCtl also enable features, such as the thin scroll barfeature described above with reference to FIG. 3J, to be provided forthe modules presented by web module client wrapper control program630BCtl. Other features can be added to the user interface, without theneed for the hosting application to be changed.

In one embodiment, web module client wrapper control program 630BCtlgenerates script instructions (not shown in FIG. 6, but represented asan instance of control-generated module script 640 g in subsequentfigures of this document). The instance of control-generated modulescript 640 g serves as a communication proxy for an executing instanceof server-provided module script 640 s. Additional control-generatedscript instructions within control-generated module script 640 g shutdown the instance of the object and set parameters for the instance ofthe object. In one embodiment, web module client wrapper control program630BCtl can implement a method to add a menu item via the menupresentation control described with reference to FIGS. 2, 3C, and 3D.Web module client wrapper control program 630BCtl can also implementinterfaces to interact with the text presentation control described withreference to FIGS. 3E through 3G, and to receive and send messages toother control programs in the framework described in FIG. 6.

Sidebar control program/sidebar container 650Ctl can also containtoolbar control programs, such as sidebar main toolbar control program623Ctl, which presents a toolbar such as sidebar main toolbar 223 ofFIG. 3A. Another type of toolbar control contained within sidebarcontrol program/sidebar container 650Ctl is a module toolbar control,such as module toolbar controls 632ACtl and 632BCtl, for presenting atoolbar associated with a module, such as toolbar 132A for module 130Aand toolbar 132B for module 130B in FIG. 1. Sidebar controlprogram/sidebar container 650Ctl provides inter-module communication,configures the layout for displaying modules, responds to menu choiceswithin modules, and manages sizing between panes for different modules.Functionality for performing these functions is provided by the serverin sidebar script 540. In one embodiment, to support coordinationbetween modules, each control included within sidebar controlprogram/sidebar container 650Ctl implements a standard interface forcommunicating with other modules via sidebar control program/sidebarcontainer 650Ctl. Interfaces between the components shown in FIG. 6 arediscussed further with reference to FIG. 9 below.

Other features can be provided within a module. For example, moduletitlebars 331A, 331B, and 331C are presented by a specialized moduletitlebar control program (not represented in FIG. 6) that is containedwithin sidebar container 650Ctl and populated by sidebar script 540).Thin scroll bars 373A, 373B, and 373C are implemented by client-basedmodules such as client-based module control program 630ACH and webmodule client wrapper control program 630BCH.

FIG. 7 shows an example of messages exchanged between client and servercomponents to prepare to display a user interface (including aspecialized window such as a sidebar) in accordance with one embodimentof the present invention. In this example, messages are exchangedbetween specialized (sidebar) web browser control instance/sidebar hostcontrol instance 420Ctl-i 7, sidebar control program instance/sidebarcontainer control instance 650Ctl-i 7, and specialized (sidebar) webserver instance 495Web-i 7 to display an instance of a specializedwindow (not shown in FIG. 7), such as sidebar 120 of FIG. 1. In action7.1, specialized (sidebar) web browser control instance/sidebar hostinstance 420Ctl-i 7 sends an HTTP request 722B to specialized (sidebar)web server program instance 495Web-i 7, providing a Uniform ResourceLocator (URL) 722B-URL for a top-level sidebar HTML document thatprovides instructions (sidebar script 540) for generating and displayingan instance of a specialized window, such as a sidebar. The HTTPrequest, such as HTTP request 722B, can include other information, suchas identifying information for the user of the application sending theHTTP request, shown as user data 722B-user.

In one embodiment, the URL for the top-level sidebar HTML document, suchas 722B-URL, is provided by the client application, but URLs for otherHTML documents used to display the sidebar are provided first from theserver to the client application before the client application needs torequest those HTML documents. This feature enables functionality ofclient application 410App to be provided by specialized (sidebar) webserver program 495Web such that client application 410App, andparticularly specialized web browser control program/sidebar host 420Ctland sidebar container 650Ctl, do not need to change when functionalityis modified or added.

In action 7.2, specialized (sidebar) web server program instance 495Web-i 7 fills in a top-level HTML document/sidebar script templateobtained at LIRL 722B-URL to provide instructions to generate a webpage/sidebar control window, such as sidebar control window 420-w 4 ofFIG. 4A. In filling in various parameters in the HTML document/sidebarscript template, specialized (sidebar) server program nstaiice 495 sb-i7 uses the user-identitfying infonnation from user data 722B-user ofHTTP request 722B to identify user preferences and configuration data.For example, a particular user may have configured the sidebar toinclude two modules, a mail module and a calendar module, and he or shemay have indicated a preference to present the calendar in a monthlyformat. This user preferences data and/or configuration information isstored on the server. Example implementations of server-providedpreferences data and configuration data are further described in U.S.patent application Ser. No. 10/652,607, filed herewith, entitled “MethodAnd Apparatus For Providing Desktop Application Functionality In AClient/Server Architecture,” and naming Derrick Wang Whittle, VincentLouis Sollicito and Edward F. Seitz as the inventors; and U.S. patentapplication Ser. No. 10/651,923, filed herewith, entitled “Method AndSystem For Maintaining Synchronization Between A Local Data Cache Arid AData Store,” and naming Vincent Louis Sollicito and Edward F. Seitz asthe inventors.

In action 7.3, specialized (sidebar) server program instance 495 sb-i 7encodes script parameters to include data to be presented as part of theweb page and/or initial values for the script parameters. In action 7.4,specialized (sidebar) web server program instance 495Web-i 7 providestop-level sidebar HTML document 722B-H to specialized (sidebar) webbrowser control program/sidebar host instance 420Ctl-i 7. In thisexample, top-level sidebar HTML document 722B-H includes sidebar script540, which provides instructions for generating an instance of thesidebar. Top-level sidebar HTML document 722B-H also includes data 798,and the example data shown includes 630B-URL, which is a URL for an HTMLdocument to use for displaying a module such as module 130A of FIG. 1within the sidebar.

In action 7.5, specialized (sidebar) web browser controlinstance/sidebar host instance 420Ctl-i 7 loads top-level sidebar HTMLdocument 722B-H and, in action 7.6, sidebar script program 540 isexecuted. As sidebar script instance 540-i 7 executes, in action 7.6.1,a sidebar control program/sidebar container instance 650Ctl-i 7 iscreated. In action 7.6.2, sidebar script instance 540-i 7 instructssidebar control program instance/sidebar container instance 650Ctl-i 7to load modules making up the specialized window (sidebar) as configuredby the user (or with a default configuration if the user has not yetconfigured the specialized window (sidebar)). For web-based modules, aURL, such as module 630B-URL, is provided for an HTML document thatincludes a script with instructions to provide contents of the modulewithin the sidebar instance. In action 7.7, sidebar control programinstance/sidebar container instance 650Ctl-i 7 constructs andinitializes module control instance 630ACtl-i 7 and web module clientwrapper control instance 630BCtl-i 7, providing a URL 630B-URL for amodule-specific HTML document to web module client wrapper controlinstance 630BCtl-i 7.

FIG. 8 shows an example of messages exchanged between sidebar containerinstance 650Ctl-i 8, web module client wrapper control instance630BCtl-i 8, and specialized (sidebar) web server program instance495Web-i 8 to provide an interface for web-based module 630BCtl-i 8within a sidebar of a user interface. In action 8.1, sidebar containerinstance 650Ctl-i 8 initializes web module client wrapper controlinstance 630BCtl-i 8, providing a URL 630B-URL for a module-specificHTML document including instructions to display a module window withinthe sidebar. Note that URL 630B-URL was originally provided byspecialized (sidebar) server program instance 495Web-i 8, as describedwith reference to FIG. 7, rather than by the client. In action 8.2, webmodule client wrapper instance 630BCtl-i 8 sends an HTTP request 822Bfor a web page at the module-specific URL 630B-URL. By providing a URLfor an HTML document that includes instructions for displaying aspecific module and associated data, the specialized (sidebar) webserver program 495Web controls the display of the module within thesidebar and the contents of that specific module if that specific moduleis web-based. As a result, the server can be re-configured to providenew modules and/or new functionality within existing modules without theneed to update the client application.

In action 8.3, specialized (sidebar) server program instance 495 sb-i 8selects an HTML/script template that corresponds to the URL provided byweb module client wrapper control instance 630BCtl-i 8. In oneembodiment, each module can have one or more scripts that can provideinstructions, depending upon configuration data and user preferences,and the specialized (sidebar) server program instance 495 sb-i 8includes logic to select the appropriate template.

In action 8.4, specialized (sidebar) server program instance 495 sb-i 8encodes module-specific parameters as script variables embedded in amodule-specific HTML document 822B-H. In action 8.5, specialized(sidebar) web server program instance 495Web-i 8 providesmodule-specific HTML document 822B-H to web module client wrapperinstance 630BCtl-i 8. Module-specific web HTML document 822B-H includesserver-provided module script 640 s and data 898. In action 8.6, webmodule client wrapper 630BCtl-i 8 loads module-specific HTML document822B-H and, in action 8.7, executes server-provided module script 640 s,creating server-provided module script instance 640-i 8.

In action 8.8, while executing server-provided module script instance640-i 8, web module client wrapper instance 630BCtl-i 8 generates scriptinstructions, represented by control-generated module script instance640 g-i 8. In action 8.9, web module client wrapper instance 630BCtl-i 8executes the control-generated module script instance 640 g-i 8 to calla function within server-provided module script instance 640 s-i 8 whenthe user interacts with the module. In action 8.10, the function calledwithin server-provided script instance 640 s-i 8 displays the module.For example, control-generated module script instance 640 g-i 8 andserver-provided module script instance module script 640 s-i 8 provideinstructions regarding the size and location within the sidebar of thepane in which the module is to be presented, titlebars and toolbars tobe presented, a default layout for data within the module, data to bepresented by the module, and behavior to be performed in response touser actions.

FIG. 9 shows examples of interfaces that can be used in the softwarearchitectures of FIGS. 4A and 6. Client application 410App serves as acontainer for specialized (sidebar) web browser control program/sidebarhost 420Ctl, as described above. A subset of the control programs andscripts described with reference to FIG. 6 is shown; for example,client-based module control program 630A and its respective moduletoolbar control program 632ACtl are not shown. The actions describedwith reference to web module client wrapper control program 630BCtl andits respective module toolbar control program 632BCtl are a superset ofthe actions performed by client-based module control program 630A andits respective module toolbar control program 632ACtl. Each of thecontrols and scripts in FIG. 9 is shown along with the name of aninterface for communicating with that respective control or script.Examples of methods and properties for each interface shown aredescribed below.

ISidebarHost interface 421, as previously shown in FIG. 4A, provides aninterface for communicating with instances of specialized (sidebar) webbrowser control program/sidebar host 420Ctl. ISidebarHost interface 421is implemented by sidebar host 420Ctl and can include, for example, anApplicationName property having the name of the application, such asclient application 410App, in which an instance of sidebar host 410Ctlis running. A MainBrowser property can provide an interface for anothercontrol, such as standard web control 490Ctl of FIG. 4A, that presents aweb page within the main browser window (such as web page standard webbrowser control window 490-w 4 presented in FIG. 4B). A HostWindowproperty can provide a handle (an identifier for an instance) of awindow in which an instance of the sidebar is displayed, such as sidebarcontrol window 420-w 4 of FIG. 4B.

Examples of methods that can be provided by ISidebarHost interface 421include the following:

-   -   Nav—Navigate the application's main browser window, such as main        browser window 125 of FIG. 1, to a specified URL. This method        can be called by one of the components presenting the sidebar to        cause a web page to be displayed in response to an event. For        example, in response to a click of an Inbox button within a mail        module of the sidebar, the contents of the user's Inbox can be        displayed in the display window adjacent to the sidebar control        window, such as main browser window 125 of FIG. 31.    -   NavNew—Open a new browser window and navigate the new browser        window to a specified URL. This method can be called by one of        the components presenting the sidebar to cause a new window to        be opened to display a web page in response to an event. For        example, in response to a click on a Compose button within a        mail module of the sidebar, a new window can be opened in which        the user can type a mail message. In contrast to the Nav method,        the NavNew method preserves the current contents of an adjacent        display window (such as main browser window 125 of FIG. 3I). An        example of a window presented by the NavNew method is provided        above with reference to FIG. 3K.    -   IsConnected—Determine whether a network connection exists. This        method can be used, for example, to suspend activities such as        automatic updates of data from the network when the client        computer system no longer is connected to the network.    -   ShowSlideDlg—Display a slide-out window. An example of a        slideout window is provided by window 313 of FIG. 3H. Slideout        window 313 is displayed in response to clicking on an item 309        within calendar module 309, but does not replace web page l90 in        main browser window 125.    -   ShowDlg—Display a modal, dialog-like web browser window and        navigate the window to a specified URL. An example of such a        dialog box is provided by mail options configuration window        139AOptions_configuration with reference to FIG. 3C.

Referring back to FIG. 9, sidebar script 640 implements a TopJSinterface 945. TopJS interface 945 can include a set of functions (in ascript) that are executed when the top-level sidebar HTML document isloaded, as described with reference to FIGS. 7 and 8. Examples ofmethods that can be provided by TopJS interface 945 include thefollowing:

-   -   onNotify—Send a notification message. This method can be used,        for example, by the sidebar host instance to send a notification        message to the sidebar container instance. In one embodiment,        the sidebar host instance invokes a method provided by the        IsbStandard interface 955 (described in further detail below)        implemented by the sidebar container instance. In response to        the invocation of the notification method, the sidebar container        instance may pass the notification message to module control        instances and other control instances running in the sidebar        container instance. An example of a scenario in which the        onNotify method is used is provided with reference to FIG. 11        described below.    -   scRequestParams—Request initialization parameters to initialize        a module. This method can be invoked by the sidebar container        instance to request initialization information for a given        module control instance, such as web module client wrapper        control instance 630BCtl-i 7 of FIG. 7.    -   onHide—Hide the sidebar. This method can be invoked by the        sidebar host instance when the user hides the sidebar.    -   onReopen—Reopen the sidebar. This method can be invoked by the        sidebar host instance when the user reopens the hidden sidebar.    -   onRequestModules—Request certain modules to be displayed. This        method can be used by the sidebar host instance to request        certain modules to be displayed to support co-browsing.    -   onExternalMenu—Populates a menu outside the sidebar. This method        can be used by the sidebar host instance to populate a menu        outside the sidebar. In one embodiment, the onExternalMenu        method is used to support the menu titlebar for the Explorer Bar        interface of Microsoft Internet Explorer.

An IsbStandard interface 955 is implemented by sidebar controlprogram/sidebar container 650Ctl, as well as by other controls nestedwithin sidebar control program/sidebar container 650Ctl. These othercontrols include sidebar module controls, such as module control program630ACtl and web module client wrapper control program 630BCtl; andsidebar toolbars, such as toolbar control 632BCtl.

Examples of methods that can be provided by IsbStandard interface 955include the following:

-   -   sbStartUp/sbShutdown—Start/create or shut down the targeted        component instance. These methods can be invoked by the sidebar        script provided in the top-level sidebar HTML document, such as        sidebar script 540 of top-level sidebar HTML Document 722B-H of        FIG. 7. In one embodiment, each component instance invokes the        sbStartUp and sbShutdown methods for each of its children        component instances.    -   sbNotify—Pass a notification message to another component. This        method can be used, for example, by an instance of sidebar        control program/sidebar container 650Ctl to pass notification        messages to modules running within the sidebar container        instance. In one embodiment, each component instance passes        notification messages to the children component instances for        which the component instance serves as a host.    -   sbSetBrowser—Pass a handle (identifier) for an object        implementing ISidebarHost interface 425. This method can be        invoked by the sidebar script provided in the top-level sidebar        HTML document. The SbSetBrowser method enables an instance of        the sidebar control program/sidebar container 650Ctl to send        messages to an instance of the specialized (sidebar) web browser        control program/sidebar host 420Ctl via ISidebarHost interface        421.    -   sbSetParams—Pass initialization parameters to a component        instance. This method can be used, for example, by a sidebar        container instance to send initialization parameters to module        control instances included within the sidebar container        instance. These parameter values can be obtained by invoking the        scRequestParams method of TopJS interface 945, using the handle        provided in the SbSetBrowser method of the IsbStandard interface        described above.    -   sbSetPosition—Inform a component of its position within the        sidebar. This method can be used, for example, by a sidebar        container instance to inform a module control instance of its        relative position within the module control instances in the        sidebar. For example, this method can instruct that a respective        module control window be displayed in the third position of four        positions available for modules within a sidebar.

Referring again to FIG. 9, module toolbar control program 632Ctlimplements both IsbStandard interface 955 and ISidebarToolbar interface933. ISidebarToolbar interface 933 can be used, for example, by thesidebar script provided within the top-level sidebar HTML document topopulate the sidebar main toolbar, such as sidebar main toolbar 322 ofFIG. 3. In addition, ISidebarToolbar interface 933 can be used by webmodule client wrapper control program 630BCtl to populate moduletoolbars, such as toolbars 132A, 132B, and 132C within respectivemodules 130A, 130B, and 130C of FIG. 3A. Populating a toolbar includesspecifying which icons to provide within the toolbar and providing aprogram having the functionality to be provided by each toolbar icon.Methods can be provided within ISidebarToolbar interface 933 to specifya toolbar's buttons, background appearance, graphics, sizing behavior,tool tips, and so on. Because the sidebar script and the server-providedmodule scripts are obtained from the server, the display andfunctionality of each toolbar can be re-configured at the server withoutthe need to update the client application.

WebModJS interface 935 is implemented by server-provided module script640 s of FIG. 6. Control-generated module script 640 g translates theIsbStandard interface to the WebModJS interface. An instance of webmodule client wrapper control program 630BCtl can provide functionalityby executing scripts embedded within the HTML document and generatingadditional script instructions, as described with reference to FIGS. 6through 8. Thus, even though a server-provided module script, such asserver-provided module script 640 s, cannot implement a COM interfacedirectly, the instance of web module client wrapper control program630BCtl translates the standard IsbStandard COM interface into scriptfunction invocations of WebModJS interface 935 to serve as a proxy forthe IsbStandard COM interface. Thus, an instance of web module clientwrapper control program 630BCtl serves as a proxy for standard sidebarfunctions, such as the sidebar functions performed by methods StartUp,Shutdown, sbSetParams, and sbNotify in IsbStandard interface 955.

FIG. 10A shows an alternative architecture for a software systemimplementing the user interface of FIG. 1 and providing notificationmessages to ensure that data displayed in a sidebar and in anindependent display window are consistent.

As in FIG. 4A, client application 410App of FIG. 10A includesspecialized (sidebar) web browser control program/sidebar host 420Ctl(also referred to as specialized web browser control program 420Ctl) anda standard web browser control program 490Ctl. Each of standard webbrowser control program 490Ctl and specialized web browser controlprogram 420Ctl can be considered to operate independently of the other,although in this embodiment, standard web browser control 490Ctlincludes a sidebar notifier control program 1080Ctl that is instructedby specialized web browser control program 420Ctl. Sidebar notifiercontrol program 1080Ctl communicates with specialized (sidebar)notification web server program 496Web. An instance of sidebar notifiercontrol program 1080Ctl need not exist at all times; a sidebar notifiercontrol instance can be instantiated when there is a need to send anotification message due to receiving a notification from an instance ofspecialized (sidebar) notification web server program 496Web. Such anotification indicates that a change to data displayed in a web page hasoccurred. Specialized (sidebar) notification web server program 496Webincludes specialized (sidebar) notification program 496 ntf to performprocessing similar to that of specialized (sidebar) server program 495sb.

FIG. 10B shows interaction between the components described withreference to FIG. 10A. The interaction between components is similar tothat described with reference to FIGS. 4B through 8. When data displayedby standard web browser control instance 490Ctl-i 10 are changed and anHTTP request with the changed data (not shown) is sent to specialized(sidebar) notification web server instance 495Web-i 10, sidebar notifiercontrol instance 1080Ctl-i 10 notifies specialized (sidebar) web browsercontrol instance/sidebar host instance 420Ctl-i 10 of the change to thedata so that consistent data can be displayed within each web page. Webpage/sidebar control window 420-w 10 and web page/standard web browsercontrol window 490-w 10 should display consistent data, although notnecessarily in the same format. This communication to providenotification of sidebar module control instances is described in furtherdetail with reference to FIG. 11.

FIG. 11 shows a data flow notifying sidebar control programs to updatedata displayed in the sidebar in response to a change to data within aweb page, such as web page/standard web browser control window 410-w 10described with reference to FIG. 10B. The example of FIG. 11 assumesthat HTML documents for the sidebar host instance 620Ctl-i 11, sidebarcontainer instance 650Ctl-i 11, and web module client wrapper controlinstance 630Ctl-i 11 have been loaded. The example of FIG. 11 alsoassumes that sidebar script 540 and sidebar server-provided modulescript 640 s have been executed; and that at least a startup function ofserver-provided module script 640 s has been invoked. In action 11.1,standard web browser control instance 490Ctl-i 11 sends a request 1122including changed data 1122-data, made within a web page that standardweb browser control instance 490Ctl displays. The request is sent tospecialized (sidebar) notification web server program instance 496Web-i11. In response to receiving the updated data, in action 11.2.1,specialized (sidebar) notification program instance 496 ntf-i 11initializes a notification HTML/script template, similar to theinitialization performed with reference to the HTML/script templates forsidebar script 540 in FIGS. 5 and 7 and server-provided module script640 s in FIG. 8. In action 11.2.2, specialized (sidebar) notificationweb server program instance 496Web-i 11 provides an HTML document 1122-Hcontaining a notification script 1142 and changed data 1122-data tostandard web browser control instance 490Ctl-i 11. In action 11.3, whenstandard-web browser control instance 490Ctl-i 11 loads HTML document1122-H, notification script 1142 executes, as shown in action 11.4. Inaction 11.4, notification script instance 1142-i 11 is created, and inaction 11.4.1, notification script instance 1142-i 11 creates sidebarnotifier control instance 1080Ctl-i 11. In action 11.4.2, notificationscript instance 1142-i 11 instructs sidebar notifier control instance1080Ctl-i 11 to notify the sidebar host instance 420Ctl-i 11 that thechange in changed data 1122-data has occurred.

In action 11.5, sidebar notifier control instance 1080Ctl-i 11 sends anotification message 1144 to sidebar host instance 420Ctl-i 11. Inaction 11.6, sidebar host instance 420Ctl-i 11 calls a notificationhandler function program instance 1146-i 11 of sidebar script instance540-i 11. In response, notification handler function program instance1146-i 11 sends a notification message to sidebar container instance650Ctl-i 11 in action 11.7. In action 11.8, sidebar container instance650Ctl-i 11 sends a notification message, such as notification message1144, to each of its children component instances, including web moduleclient wrapper control instance 630BCtl-i 11, as shown. In action 11.9,generated script instructions, represented by control-generated modulescript instance 640 g-i 11, call a module notification handler scriptinstance of module script instance 640-i 11, which, in action 11.10,immediately displays the changed data 1122-data.

The functionality provided by specialized (sidebar) notification webserver program 496Web and specialized (sidebar) notification program 496ntf can be implemented in several ways. For example, request 1122 couldbe sent to a standard web server, such as an instance of standard webserver control program 494, providing a parameter with a URL for anotification web server, such as (sidebar) notification web serverprogram 496Web. The standard web server control instance could return aresponse that causes the standard web browser control instance to send asecond request to the URL provided, and the notification web servercontacted could send the notification HTML document. Other possiblescenarios are also within the scope of the invention.

As a result, a web browser control instance receiving an update to datavia a web page notifies a second web browser control instance that iscapable of displaying the data that the data have changed. In someembodiments, in response to the notifications, second web browsercontrol instance's respective copy of the data is updated. This eventnotification functionality enables multiple independent web browserinstances to display the same data simultaneously without each webbrowser instance requesting the HTML document from the server. Themultiple web browser instances can operate independently of one another.For example, standard web browser control instance 490Ctl-i 11 mayoperate independently of specialized sidebar web browser controlinstance/sidebar host instance 420Ctl-i 11. For example, neitherstandard web browser control instance 490Ctl-i 11 or specialized sidebarweb browser control instance/sidebar host instance 420Ctl-i 11 hosts theother web browser control instance. In addition, web browser controlinstances 490Ctl-i 11 and 420Ctl-i 11 may not be hosted by the samecontainer instance. Web browser control instances 490Ctl-i 11 and420Ctl-i 11 can be running within different application instances when auser has two or more applications running and each application instanceincludes a web browser control instance. For example, sidebar notifiercontrol instance 1080Ctl-i 11 can send notification messages, such asnotification 1144, to both sidebar host instance 420Ctl-i 11 runningwithin the same application instance and to another sidebar hostinstance running in another application instance. Stated another way,all sidebar host instances currently running on the client computersystem are notified, even when they are running within differentapplication instances.

Other Embodiments

The functionality described with reference to the architecture shown inFIGS. 4A, 6, and 10A can be provided by many different software andhardware configurations. One of skill in the art will recognize that thefunctionality described for the ActiveX controls described herein may beperformed by various types of controls, modules, instructions, and/orother means of providing the functionality.

The present invention is well adapted to attain the advantages mentionedas well as others inherent therein. While the present invention has beendepicted, described, and is defined by reference to particularembodiments of the invention, such references do not imply a limitationon the invention, and no such limitation is to be inferred. Theinvention is capable of considerable modification, alteration, andequivalents in form and function, as will occur to those ordinarilyskilled in the pertinent arts. The depicted and described embodimentsare examples only, and are not exhaustive of the scope of the invention.

The foregoing described embodiments include components contained withinother components, such as the controls included within sidebar controlprogram/sidebar container 650Ctl of FIG. 6. It is to be understood thatsuch architectures are merely examples, and that, in fact, many otherarchitectures can be implemented which achieve the same functionality.In an abstract but still definite sense, any arrangement of componentsto achieve the same functionality is effectively “associated” such thatthe desired functionality is achieved. Hence, any two components hereincombined to achieve a particular functionality can be seen as“associated with” each other such that the desired functionality isachieved, irrespective of architectures or intermediate components.Likewise, any two components so associated can also be viewed as being“operably connected,” or “operably coupled,” to each other to achievethe desired functionality.

The foregoing detailed description has set forth various embodiments ofthe present invention via the use of block diagrams, flowcharts, andexamples. It will be understood by those within the art that each blockdiagram component, flowchart step, operation and/or componentillustrated by the use of examples can be implemented, individuallyand/or collectively, by a wide range of hardware, software, firmware, orany combination thereof.

The present invention has been described in the context of fullyfunctional computer systems; however, those skilled in the art willappreciate that the present invention is capable of being distributed asa program product in a variety of forms, and that the present inventionapplies equally regardless of the particular type of signal bearingmedia used to actually carry out the distribution. Examples of signalbearing media include recordable media such as floppy disks and CD-ROM,transmission type media such as digital and analog communication links,as well as media storage and distribution systems developed in thefuture.

The above-discussed embodiments may be implemented by software modulesthat perform certain tasks. The software modules discussed herein mayinclude script, batch, or other executable files. The software modulesmay be stored on a machine-readable or computer-readable storage mediumsuch as a disk drive. Storage devices used for storing software modulesin accordance with an embodiment of the invention may be magnetic floppydisks, hard disks, or optical discs such as CD-ROMs or CD-Rs, forexample. A storage device used for storing firmware or hardware modulesin accordance with an embodiment of the invention may also include asemiconductor-based memory, which may be permanently, removably, orremotely coupled to a microprocessor/memory system. Thus, the modulesmay be stored within a computer system memory to configure the computersystem to perform the functions of the module. Other new and varioustypes of computer-readable storage media may be used to store themodules discussed herein.

The above description is intended to be illustrative of the inventionand should not be taken to be limiting. Other embodiments within thescope of the present invention are possible. Those skilled in the artwill readily implement the steps necessary to provide the structures andthe methods disclosed herein, and will understand that the processparameters and sequence of steps are given by way of example only andcan be varied to achieve the desired structure as well as modificationsthat are within the scope of the invention. Variations and modificationsof the embodiments disclosed herein can be made based on the descriptionset forth herein, without departing from the scope of the invention.Consequently, the invention is intended to be limited only by the scopeof the appended claims, giving full cognizance to equivalents in allrespects.

1. A method comprising: dynamically obtaining a text included in a webpage; displaying a scroll bar having a dimension greater than zero in afirst area that is thinner than a scroll bar displayed in a third areato increase available size of the first area, wherein the third area isassociated with the first area; dynamically calculating from the text amaximum portion of the text that can be displayed within the first area,wherein dynamically calculating is a function of available size of thefirst area and the size of all of the text; displaying the maximumportion of the text that can be displayed within the first area when allof the text cannot be displayed within the first area; and displayingall of the text in a second area in response to a mouseover eventoccurring with reference to the maximum portion of the text displayed inthe first area.
 2. The method of claim 1 further comprising: performingan action related to the text in response to a second event occurring inthe second area displaying all of the text.
 3. The method of claim 2wherein a portion of the second area extends outside the first area, andthe second event occurs within the portion of the second area.
 4. Themethod of claim 2 wherein the second event is a click event.
 5. Themethod of claim 2 wherein the performing the action comprises displayinginformation related to the text in a fourth area adjacent to the firstarea.
 6. The method of claim 5 further comprising: continuing to displaythe maximum portion of the text in the first area when the informationrelated to the text is displayed in the fourth area.
 7. The method ofclaim 2 wherein the second area overlays a fourth area, and the fourtharea exists outside a window provided by a host application, wherein atext presentation control instance running within the host applicationperforms: the displaying of the maximum portion of the text, and thedisplaying of all of the text.
 8. The method of claim 1 wherein all ofthe text comprises a hyperlink to content described by the text.
 9. Themethod of claim 1 wherein the first area comprises a sidebar.
 10. Themethod of claim 1 further comprising: displaying a remaining portion ofthe text outside the first area when all of the text is displayed,wherein the maximum portion of the text does not comprise the remainingportion.
 11. The method of claim 1 wherein the text are obtained from anHTML document prior to the displaying.
 12. The method of claim 1 furthercomprising: obtaining the text from a document prior to the displaying,wherein a web browser performs the obtaining.
 13. The method of claim 1further comprising: adjusting the maximum portion of the text when theavailable size of the first area changes.
 14. The method of claim 13wherein adjusting the maximum portion of the text comprises adjusting anumber of characters displayed in the maximum portion of the text to fitwithin the available size of the first area.
 15. The method of claim 1further comprising: when the maximum portion of the text comprises allof the text, performing an action related to the text in response to aclick event occurring with reference to the maximum portion of the text.16. The method of claim 15 wherein the performing the action comprisespresenting information related to the text in a second area adjacent tothe first area.
 17. The method of claim 16 further comprising:continuing to display the first area and the maximum portion of the textwhen the information related to the text is displayed in the secondarea.
 18. The method of claim 17 wherein continuing to display the firstarea and the maximum portion of the text when the complete descriptionis displayed in a second area.
 19. A method comprising: displaying a webpage in a main browser window; dynamically obtaining a text included inthe web page; displaying a scroll bar having a dimension greater thanzero in a first area that is thinner than a scroll bar displayed in themain browser window to increase available size of the first area,wherein the first area excludes text within a scroll bar area for thethinner scroll bar, and the main browser window is associated with thefirst area; dynamically calculating from the text a maximum portion ofthe text that can be displayed within the first area, whereindynamically calculating is a function of available size of the firstarea and the size of all of the text; displaying the maximum portion ofthe text that can be displayed within the first area outside the mainbrowser window when all of the text cannot be displayed within the firstarea; displaying all of the text in a second area in response to amouseover event occurring with reference to the maximum portion of thetext; and continuing to display the web page in the main browser windowafter the mouseover event.
 20. The method of claim 19 furthercomprising: continuing to display the web page in the main browserwindow until a click event occurs in the second area.
 21. The method ofclaim 20 wherein the click event causes a second web page to bedisplayed in the main browser window.
 22. The method of claim 20 furthercomprising: continuing to display the maximum portion of the text withinthe first area after the click event.
 23. The method of claim 19 furthercomprising: continuing to display all of the text until a second clickevent occurs outside the second area.
 24. The method of claim 19 furthercomprising: overlaying the first area with the second area when themaximum portion of the text comprises all of the text.
 25. Acomputer-readable storage medium comprising: text presentationinstructions configured to: dynamically obtain a text included in a webpage; display a scroll bar having a dimension greater than zero in afirst area that is thinner than a scroll bar displayed in a third areato increase available size of the first area, wherein the first areaexcludes text within a scroll bar area for the thinner scroll bar, andthe third area is associated with the first area; dynamically calculatefrom the text a maximum portion of the text that can be displayed withinthe first area, wherein the dynamic calculation is a function ofavailable size of the first area and the size of all of the text;display the maximum portion of the text that can be displayed within thefirst area when all of the text cannot be displayed within the firstarea; and display all of the text in a second area in response to amouseover event occurring with reference to the maximum portion of thetext displayed in the first area.
 26. The computer-readable medium ofclaim 25 wherein the text presentation instructions are furtherconfigured to perform an action related to the text in response to asecond event occurring in a second area displaying all of the text. 27.The computer-readable medium of claim 26 wherein the text presentationinstructions are further configured to display information related tothe text in a fourth area adjacent to the first area in response to thesecond event.
 28. The computer-readable medium of claim 27 furthercomprising: the text presentation instructions configured to continue todisplay the first area and the maximum portion of the text when theinformation related to the text is displayed in the third area.
 29. Thecomputer-readable medium of claim 25 wherein a portion of the secondarea extends outside the first area, and the second event occurs withinthe portion of the second area.
 30. A computer-readable storage mediumcomprising: instructions configured to use a text presentation controlprogram, wherein the text presentation control program is configured to:dynamically obtain a text included in a web page; display a scroll barhaving a dimension greater than zero in a first area that is thinnerthan a scroll bar displayed in a third area to increase available sizeof the first area, wherein the first area excludes text within a scrollbar area for the thinner scroll bar, and the third area is associatedwith the first area; dynamically calculate from the text a maximumportion of the text that can be displayed within the first area, whereinthe dynamic calculation is a function of available size of the firstarea and the size of all of the text; display the maximum portion of thetext that can be displayed within the first area when all of the textcannot be displayed within the first area; and display all of the textin a second area in response to a mouseover event occurring withreference to the maximum portion of the text displayed in the firstarea.
 31. The computer-readable medium of claim 30 wherein the textpresentation control program is further configured to perform an actionrelated to the text in response to a second event occurring in a secondarea displaying all of the text.
 32. The computer-readable medium ofclaim 31 wherein the text presentation control program is furtherconfigured to display information related to the text in a fourth areaadjacent to the first area in response to the second event.
 33. Thecomputer-readable medium of claim 32 further comprising: the textpresentation control program is further configured to continue todisplay the first area and the maximum portion of the text in the firstarea when the information related to the text is displayed in the fourtharea.
 34. The computer-readable medium of claim 30 wherein the textpresentation control program is further configured to display thecomplete portion in second area, wherein a portion of the second areaextends outside the first area, and the second event occurs within theportion of the second area.
 35. A computer system comprising: aprocessor to execute instructions, and a memory to store theinstructions, wherein the instructions comprise: text presentationinstructions configured to dynamically obtain a text included in a webpage; display a scroll bar having a dimension greater than zero in afirst area that is thinner than a scroll bar displayed in a third areato increase available size of the first area, wherein the first areaexcludes text within a scroll bar area for the thinner scroll bar, andthe third area is associated with the first area; dynamically calculatefrom the text a maximum portion of the text that can be displayed withinthe first area, wherein the dynamic calculation is a function ofavailable size of the first area and the size of all of the text;display the maximum portion of the text that can be displayed within thefirst area when all of the text cannot be displayed within the firstarea; and display all of the text in a second area in response to amouseover event occurring with reference to the maximum portion of thetext displayed in the first area.
 36. The computer system of claim 35wherein the text presentation instructions are further configured toperform an action related to the text in response to a second eventoccurring in a second area displaying all of the text.
 37. The computersystem of claim 36 wherein the text presentation instructions arefurther configured to display information related to the text in afourth area adjacent to the area in response to the second event. 38.The computer system of claim 37 further comprising: the textpresentation instructions are further configured to continue to displaythe area and the maximum portion of the text in the area when theinformation related to the text is displayed in the fourth area.
 39. Thecomputer system of claim 35 wherein the text presentation instructionsare further configured to display all of the text in a second area,wherein a portion of the second area extends outside the first area, andthe second event occurs within the portion of the second area.
 40. Ahardware apparatus comprising: means for dynamically obtaining a textincluded in a web page; first displaying means for displaying a scrollbar having a dimension greater than zero in a first area that is thinnerthan a scroll bar displayed in a third area to increase available sizeof the first area, wherein the first area excludes text within a scrollbar area for the thinner scroll bar, and the third area is associatedwith the first area; second displaying means for displaying from thetext a maximum portion of the text that can be displayed within thefirst area when all of the text cannot be displayed within the firstarea, wherein the maximum portion of the text that can be displayedwithin the first area is dynamically calculated, and the dynamiccalculation is a function of the available size of the first area andthe size of all of the text; and third displaying means for displayingall of the text in a second area in response to a mouseover eventoccurring with reference to the maximum portion of the text in the firstarea.
 41. The apparatus of claim 40 further comprising: performing meansfor performing an action related to the text in response to a secondevent occurring in a second area displaying all of the text.
 42. Theapparatus of claim 41 further comprising: fourth displaying means fordisplaying information related to the text in a fourth area adjacent tothe area in response to the second event.
 43. The apparatus of claim 42further comprising: continuing means for continuing to display the areaand the maximum portion of the text in the area when the informationrelated to the text is displayed in the fourth area.
 44. The apparatusof claim 40 wherein the second displaying means comprise thirddisplaying means for displaying all of the text in a second area,wherein a portion of the second area extends outside the first area, andthe second event occurs within the portion of the second area.